home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 7 / DOS203A.dsk / DMFE.LIST.txt < prev    next >
Text File  |  2012-02-16  |  18KB  |  851 lines

  1.  
  2. 10  REM ************************
  3. 20  REM *DOT MATRIX FONT EDITOR*
  4. 30  REM *  BY  R. GLENN JONES  *
  5. 40  REM *  COPYRIGHT (C) 1986  *
  6. 50  REM *  BY  R. GLENN JONES  *
  7. 60  REM *  DON MILLS, ONT,CAN  *
  8. 70  REM ************************
  9. 80  GOTO 3290
  10. 90  REM 
  11. 100  REM GET COMMAND
  12. 110  REM 
  13. 120  XDRAW CR AT CX,CY
  14. 130  VTAB N5
  15.    : HTAB C
  16.    : PRINT "COMMAND =>";
  17.    : VTAB N5
  18.    : HTAB N1
  19.    : POKE  - 16368,B
  20.    : GET CMD$
  21. 140  XDRAW CR AT CX,CY
  22. 150  I1 = B
  23. 160  FOR I = C TO  LEN (CD$)
  24. 170  IF CMD$ =  MID$ (CD$,I,C) THEN I1 = I
  25.    : I =  LEN (CD$)
  26. 180  NEXT 
  27. 190  IF I1 > 17 THEN  CALL CVERT,R,LE,CH$(B)
  28. 200  ON I1 GOSUB 600,710,660,810,760,860,920,960,1000,1060,1180,1250,1320,1680,1740,1800,1890,1990,2250,4090
  29. 210  GOTO 120
  30. 220  REM 
  31. 230  REM UPDATE DISPLAY
  32. 240  REM 
  33. 250  HCOLOR= HC
  34. 260  DRAW DOT AT CX,CY
  35. 270  TX = CX / K - N3
  36.    : TY = CY / N0 - K
  37. 280  DRAW SMDOT AT TX + OF,(TY * D) + OF
  38. 290  IF TY = C THEN CH$(TX) = DT$ +  MID$ (CH$(TX),TY + C)
  39. 300  IF TY = Q THEN CH$(TX) =  LEFT$ (CH$(TX),TY - C) + DT$
  40. 310  IF TY > C AND TY < Q THEN CH$(TX) =  LEFT$ (CH$(TX),TY - C) + DT$ +  MID$ (CH$(TX),TY + C)
  41. 320  HCOLOR= E
  42. 330  RETURN 
  43. 340  REM 
  44. 350  REM INIT CHARACTER
  45. 360  REM 
  46. 370  FOR H = C TO N1
  47. 380  CH$(H) = "00000000"
  48. 390  NEXT H
  49. 400  RETURN 
  50. 410  REM 
  51. 420  REM  WINDOW 1
  52. 430  REM 
  53. 440  POKE N9,D  
  54.    : POKE N9 + C,N9 + K
  55.    : POKE N9 + D,E
  56.    : POKE N9 + E,N8
  57. 450  RETURN 
  58. 460  REM 
  59. 470  REM  WINDOW 2
  60. 480  REM 
  61. 490  POKE N9,B
  62.    : POKE N9 + C,N6
  63.    : POKE N9 + D,N4
  64.    : POKE N9 + E,N5
  65. 500  RETURN 
  66. 510  REM 
  67. 520  REM  STRING PRINT
  68. 530  REM 
  69. 540  SPEED= 175
  70.    : HTAB (N6 -  LEN (HD$)) / D
  71.    : FOR G = C TO  LEN (HD$)
  72.    : PRINT MID$ (HD$,G,C);
  73.    : Z =  PEEK ( - 16336) +  PEEK ( - 16336)
  74.    : FOR H = C TO 20
  75.    : NEXT 
  76.    : NEXT 
  77.    : SPEED= 255
  78.    : FOR H = C TO 1000
  79.    : NEXT 
  80.    : RETURN 
  81. 550  REM 
  82. 560  REM  CURSOR ROUTINES
  83. 570  REM 
  84. 580  REM  UP
  85. 590  REM 
  86. 600  CY = CY - N0
  87. 610  IF CY < TC THEN CY = BC
  88. 620  RETURN 
  89. 630  REM 
  90. 640  REM  LEFT
  91. 650  REM 
  92. 660  GOSUB 710
  93.    : IF CX < > EC THEN GOSUB 710
  94. 670  RETURN 
  95. 680  REM 
  96. 690  REM  LEFT HALF STEP
  97. 700  REM 
  98. 710  CX = CX - K
  99.    : IF CX < SC THEN CX = EC
  100. 720  RETURN 
  101. 730  REM 
  102. 740  REM  RIGHT
  103. 750  REM 
  104. 760  GOSUB 810
  105.    : IF CX < > SC THEN GOSUB 810
  106. 770  RETURN 
  107. 780  REM 
  108. 790  REM  RIGHT HALF STEP
  109. 800  REM 
  110. 810  CX = CX + K
  111.    : IF CX > EC THEN CX = SC
  112. 820  RETURN 
  113. 830  REM 
  114. 840  REM  DOWN
  115. 850  REM 
  116. 860  CY = CY + N0
  117. 870  IF CY > BC THEN CY = TC
  118. 880  RETURN 
  119. 890  REM  
  120. 900  REM PLOT 
  121. 910  REM   
  122. 920  DT$ = "1"
  123.    : HC = E
  124.    : GOSUB 250
  125.    : RETURN 
  126. 930  REM    
  127. 940  REM UNPLOT
  128. 950  REM    
  129. 960  DT$ = "0"
  130.    : HC = B
  131.    : GOSUB 250
  132.    : RETURN 
  133. 970  REM 
  134. 980  REM CLEAR CHARACTER
  135. 990  REM 
  136. 1000  GOSUB 370
  137. 1010  HCOLOR= B
  138.     : CALL HK
  139. 1020  RETURN 
  140. 1030  REM 
  141. 1040  REM FILL CHARACTER
  142. 1050  REM 
  143. 1060  HCOLOR= B
  144.     : CALL HK
  145.     : GOSUB 370
  146.     : HCOLOR= E
  147. 1070  FOR H = SC TO EC STEP N0
  148. 1080  FOR G = TC TO BC STEP N0
  149. 1090  DRAW DOT AT H,G
  150. 1100  DRAW SMDOT AT ((H / K) - N3) + OF,(((G / N0) - K) * D) + OF
  151. 1120  NEXT G
  152. 1110  CH$((H / K) - N3) = "11111111"
  153. 1130  NEXT H
  154. 1140  RETURN 
  155. 1150  REM 
  156. 1160  REM  GET NEXT CHARACTER
  157. 1170  REM 
  158. 1180  CALL CVERT,R,LE,CH$(B)
  159. 1190  LE = LE + C
  160. 1200  GOSUB 1450
  161. 1210  RETURN 
  162. 1220  REM 
  163. 1230  REM  GET PREVIOUS CHARACTER
  164. 1240  REM 
  165. 1250  CALL CVERT,R,LE,CH$(B)
  166. 1260  LE = LE - C
  167. 1270  GOSUB 1450
  168. 1280  RETURN 
  169. 1290  REM 
  170. 1300  REM GET CHARACTER TO EDIT
  171. 1310  REM 
  172. 1320  CALL CVERT,R,LE,CH$(B)
  173. 1330  HOME 
  174. 1340  LE$ = NL$
  175.     : VTAB N5
  176.     : HTAB C
  177.     : PRINT "GET CHR =>";:
  178. 1350  FOR I = C TO F
  179. 1360  HTAB N1 + I
  180.     : GET TE$
  181. 1370  IF TE$ = R$ THEN I = F
  182.     : HOME
  183. 1380  IF TE$ =  CHR$ (8) THEN 1330
  184. 1390  PRINT TE$;
  185. 1400  LE$ = LE$ + TE$
  186. 1410  NEXT 
  187. 1420  IF  LEFT$ (LE$,C) = "#" AND  LEN (LE$) > C THEN LE =  ABS ( VAL ( MID$ (LE$,D)))
  188.     : GOTO 1450
  189. 1430  IF  LEFT$ (LE$,C) = "#" AND  LEN (LE$) = C THEN LE$ =  CHR$ (35)
  190. 1440  LE =  ASC (LE$)
  191. 1450  IF LE < N9 OR LE > CS THEN  GOTO 1330
  192. 1460  CALL CVERT,W,LE,CH$(B)
  193. 1470  CW$ = MID$ (CH$(B),D,C)
  194. 1480  VTAB N3
  195.     : HTAB N2
  196.     : PRINT  RIGHT$ ("000" +  STR$ (LE),E)
  197. 1490  POKE SL,EC
  198.     : IF LE < N7 THEN  POKE SL,LE + N7
  199. 1500  IF LE > EC THEN  POKE SL,LE
  200. 1510  VTAB N3
  201.     : HTAB N6
  202.     : PRINT  RIGHT$ (CH$(B),C)
  203. 1520  VTAB N4
  204.     : HTAB N2
  205.     : PRINT "     ";
  206. 1530  VTAB N4
  207.     : HTAB N2
  208.     : PRINT  MID$ (CH$(B),E,E);
  209. 1540  IF  MID$ (CH$(B),E,E) = NN$ THEN  PRINT "+";CW$
  210. 1550  VTAB N4
  211.     : HTAB N6
  212.     : PRINT  LEFT$ (CH$(B),C)
  213. 1560  HOME 
  214. 1570  HCOLOR= B
  215.     : CALL HK
  216.     : HCOLOR= E
  217. 1580  FOR H = C TO N1
  218. 1590  FOR G = C TO Q
  219. 1600  IF  VAL ( MID$ (CH$(H),G,C)) = C THEN  DRAW DOT AT (H + N3) * K,(G + K) * N0
  220.     : DRAW SMDOT AT H + OF,(G * D) + OF
  221. 1610  NEXT G,H
  222. 1620  X = (X + C) * (X < L1)
  223. 1630  IF X = B THEN XX =  FRE (0)
  224. 1640  RETURN 
  225. 1650  REM 
  226. 1660  REM TOGGLE DESCENDER Y/N
  227. 1670  REM 
  228. 1680  IF  LEFT$ (CH$(B),C) = YY$ THEN CH$(B) = N$ +  RIGHT$ (CH$(B),K)
  229.     : VTAB N4
  230.     : HTAB N6
  231.     : PRINT N$;
  232.     : RETURN 
  233. 1690  IF  LEFT$ (CH$(B),C) = N$ THEN CH$(B) = YY$ +  RIGHT$ (CH$(B),K)
  234.     : VTAB N4
  235.     : HTAB N6
  236.     : PRINT YY$;:
  237. 1700  RETURN 
  238. 1710  REM 
  239. 1720  REM TOGGLE DOWNLOADABLE Y/N
  240. 1730  REM 
  241. 1740  IF  RIGHT$ (CH$(B),C) = YY$ THEN CH$(B) =  LEFT$ (CH$(B),K) + N$
  242.     : VTAB N3
  243.     : HTAB N6
  244.     : PRINT N$;
  245.     : RETURN 
  246. 1750  IF  RIGHT$ (CH$(B),C) = N$ THEN CH$(B) =  LEFT$ (CH$(B),K) + YY$
  247.     : VTAB N3
  248.     : HTAB N6
  249.     : PRINT YY$;:
  250. 1760  RETURN 
  251. 1770  REM 
  252. 1780  REM TOGGLE PROPORTIONAL ON/OFF
  253. 1790  REM 
  254. 1800  IF  MID$ (CH$(B),E,E) = NN$ THEN CH$(B) =  LEFT$ (CH$(B),D) + "OFF" + RIGHT$ (CH$(B),C)
  255.     : VTAB N4
  256.     : HTAB N2
  257.     : PRINT "OFF  ";
  258.     : RETURN 
  259. 1810  IF  MID$ (CH$(B),E,E) = "OFF" THEN CH$(B) =  LEFT$ (CH$(B),D) + NN$ + RIGHT$ (CH$(B),C)
  260.     : VTAB N4
  261.     : HTAB N2
  262.     : PRINT NN$;"+";CW$
  263. 1820  HOME
  264.     : VTAB N5 - C
  265.     : PRINT "CHARACTER WIDTH"
  266.     : PRINT "GREATER THAN ACTUAL   SIZE (";
  267.     : INVERSE
  268.     : PRINT YY$;
  269.     : NORMAL
  270.     : PRINT "/N) ";A2$;
  271.     : GET Y$
  272. 1830  IF Y$ = YY$ THEN CH$(B) =  LEFT$ (CH$(B),C) + "1" +  RIGHT$ (CH$(B),F)
  273.     : CW$ = "1"
  274.     : GOTO 1850
  275. 1840  CH$(B) =  LEFT$ (CH$(B),C) + "0" +  RIGHT$ (CH$(B),F)
  276.     : CW$ = "0"
  277. 1850  VTAB N4
  278.     : HTAB N2
  279.     : PRINT NN$;"+";CW$
  280.     : HOME
  281.     : RETURN 
  282. 1860  REM 
  283. 1870  REM CLEAR CHARACTER SET
  284. 1880  REM 
  285. 1890  HOME 
  286. 1900  VTAB N5
  287.     : HTAB C
  288. 1910  PRINT PR$;"RETURN TO ";
  289.     : INVERSE
  290.     : PRINT "ERASE";
  291.     : NORMAL
  292.     : PRINT " CHARACTER SET =>";
  293. 1920  VTAB N5
  294.     : HTAB 39
  295. 1930  GET Y$
  296. 1940  IF Y$ <  > R$ THEN HOME
  297.     : RETURN 
  298. 1950  POKE N9 + D,N8 + C
  299.     : HOME
  300.     : TEXT
  301.     : GOSUB 440
  302.     : HOME
  303.     : POP
  304.     : GOTO 3670
  305. 1960  REM 
  306. 1970  REM  PRINT CHARACTER
  307. 1980  REM 
  308. 1990  HOME
  309.     : PRINT "MAKE SURE DIP SWITCH 1-5 IS OFF"
  310.     : PRINT "AND THE PRINTER IS ON";:
  311. 2000  FOR I = C TO 2000
  312.     : NEXT
  313.     : PRINT
  314.     : PRINT 
  315. 2010  PRINT D$;PS$;C
  316. 2020  VTAB F
  317.     : HTAB K
  318. 2030  PRINT DF$;
  319. 2040  VTAB N5 - C
  320. 2050  FOR I = C TO N1
  321. 2060  A = N7
  322.     : M = B
  323. 2070  FOR J = C TO Q
  324. 2080  M = ( VAL ( MID$ (CH$(I),J,C)) * A) + M
  325.     : A = A / D
  326. 2090  NEXT J
  327. 2100  IF  PEEK (CL) > N7 - C THEN  GOTO 2100
  328. 2110  POKE CO,M
  329. 2120  NEXT I
  330. 2130  PRINT D$;PS$;B
  331. 2140  PRINT PR$;"ANY KEY TO PRINT CHARACTER =>";
  332.     : GET Y$
  333. 2150  HOME 
  334.     : PRINT 
  335.     : INVERSE 
  336.     : PRINT "PRINTING" 
  337.     : NORMAL 
  338. 2160  PRINT D$;PS$;C
  339. 2170  PRINT UD$
  340. 2180  PRINT "A"
  341. 2190  PRINT UN$
  342. 2200  PRINT D$;PS$;B
  343. 2210  RETURN 
  344. 2220  REM 
  345. 2230  REM  DOS
  346. 2240  REM 
  347. 2250  POKE N9 + D,N8 + C
  348.     : HOME 
  349.     : TEXT 
  350.     : GOSUB 440 
  351.     : HOME 
  352.     : CD$ = "CDSLE"
  353. 2260  VTAB N 
  354.     : INVERSE 
  355. 2270  HTAB E
  356.     : PRINT "C"; 
  357.     : NORMAL 
  358.     : PRINT "ATALOG" 
  359.     : INVERSE 
  360.     : PRINT 
  361. 2280  HTAB E 
  362.     : PRINT "D"; 
  363.     : NORMAL 
  364.     : PRINT "ELETE" 
  365.     : INVERSE 
  366.     : PRINT 
  367. 2290  HTAB E 
  368.     : PRINT "S"; 
  369.     : NORMAL 
  370.     : PRINT "AVE" 
  371.     : INVERSE 
  372.     : PRINT 
  373. 2300  HTAB E 
  374.     : PRINT "L"; 
  375.     : NORMAL 
  376.     : PRINT "OAD" 
  377.     : INVERSE 
  378.     : PRINT 
  379. 2310  HTAB E 
  380.     : PRINT E$; 
  381.     : NORMAL 
  382.     : PRINT "SCAPE" 
  383.     : PRINT 
  384. 2320  PRINT A2$; 
  385.     : GET DC$
  386. 2330  I2 = B
  387. 2340  FOR I = C TO K
  388. 2350  IF DC$ =  MID$ (CD$,I,C) THEN I2 = I 
  389.     : I = K
  390. 2360  NEXT 
  391. 2370  ON I2 GOSUB 2430,2490,2700,2580
  392. 2380  IF I2 = K THEN  HOME 
  393.     : POP
  394.     : GOTO 3770
  395. 2390  GOTO 2250
  396. 2400  REM 
  397. 2410  REM CATALOG
  398. 2420  REM 
  399. 2430  HOME 
  400.     : PRINT D$;CA$;SL$;DR$
  401. 2440  PRINT 
  402.     : PRINT PR$; 
  403.     : INVERSE 
  404.     : PRINT "ANY"; 
  405.     : NORMAL 
  406.     : PRINT " KEY TO CONTINUE" 
  407.     : PRINT 
  408.     : PRINT A2$; 
  409.     : GET Y$
  410. 2450  RETURN 
  411. 2460  REM 
  412. 2470  REM DELETE
  413. 2480  REM 
  414. 2490  HOME 
  415.     : FI$ = NL$ 
  416.     : VTAB N0 
  417.     : PRINT "FILE TO DELETE" 
  418.     : PRINT 
  419. 2500  INPUT "=>";DE$
  420. 2510  IF  LEN (DE$) > L1 THEN DE$ =  LEFT$ (DE$,L1)
  421. 2520  AC$ = "DELETE FILE" 
  422.     : FI$ = DE$ 
  423.     : AD$ = "DELETE"
  424.     : GOSUB 3160
  425. 2530  PRINT D$;"DELETE ";DE$;SL$;DR$
  426. 2540  RETURN 
  427. 2550  REM 
  428. 2560  REM  LOAD FILE
  429. 2570  REM 
  430. 2580  HOME 
  431.     : FI$ = NL$
  432. 2590  VTAB N0 
  433.     : PRINT "LOAD CHARACTER SET"
  434.     : PRINT 
  435. 2600  INPUT "=>";LO$
  436. 2610  IF LO$ = "?" THEN  HOME 
  437.     : GOSUB 2430 
  438.     : GOTO 2580
  439. 2620  IF  LEN (LO$) > L2 THEN LO$ =  LEFT$ (LO$,L2)
  440. 2630  LO$ = LO$ + ".SET"
  441. 2640  AC$ = "LOAD CHARACTER SET" 
  442.     : FI$ = LO$ 
  443.     : AD$ = "LOAD"
  444.     : GOSUB 3160
  445. 2650  PRINT D$;B$;LO$;",A$1580";SL$;DR$
  446. 2660  RETURN 
  447. 2670  REM 
  448. 2680  REM SAVE
  449. 2690  REM 
  450. 2700  HOME  
  451.     : VTAB N0
  452. 2710  PRINT "SAVE ";A1$; 
  453.     : INVERSE 
  454.     : PRINT "C"; 
  455.     : NORMAL 
  456.     : PRINT "HARACTER SET"
  457. 2720  VTAB N1 + C 
  458.     : HTAB N 
  459.     : PRINT A1$; 
  460.     : INVERSE 
  461.     : PRINT "F"; 
  462.     : NORMAL 
  463.     : PRINT "ONT FILE"
  464. 2730  VTAB 14 
  465.     : HTAB N 
  466.     : PRINT A1$; 
  467.     : INVERSE 
  468.     : PRINT E$; 
  469.     : NORMAL 
  470.     : PRINT "SCAPE"
  471. 2740  VTAB 16 
  472.     : HTAB N 
  473.     : PRINT A1$; 
  474.     : GET SA$
  475. 2750  IF SA$ = "C" THEN  GOSUB 2820
  476. 2760  IF SA$ = "F" THEN  GOSUB 2940
  477. 2770  IF SA$ = E$ THEN  RETURN 
  478. 2780  GOTO 2700
  479. 2790  REM 
  480. 2800  REM  SAVE CHARACTER SET
  481. 2810  REM 
  482. 2820  HOME 
  483.     : FI$ = NL$
  484. 2830  VTAB N0 
  485.     : PRINT "SAVE CHARACTER SET" 
  486.     : PRINT 
  487. 2840  INPUT "=>";SA$
  488. 2850  IF SA$ = "?" THEN  HOME 
  489.     : GOSUB 2430 
  490.     : GOTO 2820
  491. 2860  IF  LEN (SA$) > L2 THEN SA$ =  LEFT$ (SA$,L2)
  492. 2870  SA$ = SA$ + ".SET"
  493. 2880  AC$ = "SAVE CHARACTER SET" 
  494.     : FI$ = SA$
  495.     : AD$ = "SAV"
  496.     : GOSUB 3160
  497. 2890  PRINT D$;"BSAVE ";SA$;",A$1580,L$";L1$;SL$;DR$
  498. 2900  RETURN 
  499. 2910  REM 
  500. 2920  REM  SAVE FONT FILE
  501. 2930  REM 
  502. 2940  HOME 
  503.     : FI$ = NL$
  504. 2950  VTAB N0 
  505.     : PRINT "SAVE FONT FILE"
  506.     : PRINT 
  507. 2960  INPUT "=>";FF$
  508. 2970  IF FF$ = "?" THEN  HOME 
  509.     : GOSUB 2430 
  510.     : GOTO 2940
  511. 2980  IF  LEN (FF$) > L2 THEN FF$ =  LEFT$ (FF$,L2)
  512. 2990  FF$ = FF$ + ".FNT"
  513. 3000  HOME 
  514.     : VTAB N0
  515. 3010  PRINT "INITIALIZE PRINTER RAM"
  516. 3020  PRINT 
  517. 3030  PRINT "WITH STANDARD CHARACTERS ("; 
  518.     : INVERSE 
  519.     : PRINT YY$; 
  520.     : NORMAL 
  521.     : PRINT "/N)" 
  522.     : PRINT 
  523. 3040  PRINT A2$; 
  524.     : GET Y$
  525. 3050  IM = C 
  526.     : IF Y$ = N$ THEN IM = B
  527. 3060  POKE IR,IM
  528. 3070  AC$ = "SAVE FONT FILE" 
  529.     : FI$ = FF$ 
  530.     : AD$ = "SAV" 
  531.     : GOSUB 3160
  532. 3080  CALL DW
  533. 3090  L =  PEEK (2046) + 256 *  PEEK (2047)
  534. 3100  L = L + 297
  535. 3110  PRINT D$;"BSAVE ";FF$;",A$8D7,L";L;SL$;DR$
  536. 3120  RETURN 
  537. 3130  REM 
  538. 3140  REM  CONFIRM
  539. 3150  REM 
  540. 3160  HOME 
  541.     : VTAB N0
  542. 3170  PRINT PR$; 
  543.     : INVERSE 
  544.     : PRINT RE$; 
  545.     : NORMAL 
  546.     : PRINT " TO ";AC$ 
  547.     : PRINT 
  548. 3180  PRINT A2$;FI$ 
  549.     : PRINT 
  550. 3190  VTAB N8 
  551.     : HTAB F 
  552.     : PRINT "(PRESS ANY OTHER KEY TO ESCAPE)";
  553. 3200  VTAB 14 
  554.     : HTAB C 
  555.     : PRINT A2$; 
  556.     : GET Y$
  557. 3210  IF Y$ <  > R$ THEN  POP 
  558.     : RETURN 
  559. 3220  HOME 
  560.     : INVERSE 
  561.     : VTAB N0
  562. 3230  PRINT AD$;"ING";
  563. 3240  NORMAL 
  564.     : PRINT " ";FI$
  565. 3250  RETURN 
  566. 3260  REM 
  567. 3270  REM  INITIALIZATION  
  568. 3280  REM  
  569. 3290  IF  PEEK (104) <  > 66 THEN  POKE 103,1 
  570.     : POKE 104,66 
  571.     : POKE 16896,B
  572.     : PRINT  CHR$ (4);"RUN DMFE"
  573. 3300  ONERR  GOTO 3890
  574. 3310  DIM CH$(11)
  575.     : A1$ = "=> "
  576.     : A2$ = "=>"
  577.     : B$ = "BLOAD "
  578.     : D$ =  CHR$ (13) +  CHR$  (4)
  579.     : DR$ = ",D1"
  580.     : E$ = "E"
  581.     : N$ = "N"
  582.     : NL$ = ""
  583.     : NN$ = " ON"
  584.     : PR$ = "PRESS "
  585.     : R$ =  CHR$ (13)
  586.     : RE$ = "RETURN"
  587.     : SL$ = ",S6"
  588.     : YY$ = "Y"
  589. 3320  UN$ =  CHR$ (27) + "$0"
  590.     : UD$ =  CHR$ (27) + "$1"
  591.     : DF$ =  CHR$ (27) + "*1" +  CHR$ (65) +  CHR$ (65) +  CHR$ (139)
  592.     : PS$ = "PR#"
  593.     : CA$ = "CATALOG"
  594. 3330  B = 0
  595.     : C = 1
  596.     : D = 2
  597.     : E = 3
  598.     : F = 4
  599.     : K = 5
  600.     : N = 6
  601.     : P = 7
  602.     : Q = 8
  603.     : N0 = 10
  604.     : N1 = 11
  605.     : N2 = 15
  606.     : N8 = 19
  607.     : N3 = 21
  608.     : N4 = 22
  609.     : N5 = 24
  610. 3340  L2 = 26
  611.     : L1 = 30
  612.     : N9 = 32
  613.     : N6 = 40
  614.     : OF = 51
  615.     : TC = 60
  616.     : SC = 110
  617.     : N7 = 128
  618.     : BC = 130
  619.     : EC = 160
  620.     : SL = 1635
  621.     : WF = 44567
  622.     : NF = 44452
  623.     : CO = 49296
  624.     : CL = 49601
  625. 3350  CVERT = 16384 
  626.     : INIT = 16750
  627.     : DW = 2048
  628.     : IR = 2508
  629.     : HK = 16782
  630. 3360  POKE WF,L2
  631.    :  POKE NF,N0 + D
  632.    :  POKE NF + 153,N0 + D
  633. 3370  HOME 
  634. 3380  PRINT "::::::::::::::::::::::::::::::::::::::::";
  635.     : REM 40 COLONS
  636. 3390  PRINT ":                                      :";
  637.     : REM 38 SPACES
  638. 3400  PRINT "::::::::::::::::::::::::::::::::::::::::";
  639.     : REM 40 COLONS
  640. 3410  FOR I = F TO N8
  641.     : PRINT ":                                      :";
  642.     : NEXT
  643.     : REM 38 SPACES
  644. 3420  PRINT "::::::::::::::::::::::::::::::::::::::::"
  645.     : REM 40 COLONS
  646. 3430  VTAB D
  647.     : HD$ = "  DOT MATRIX FONT EDITOR"
  648.     : GOSUB 540
  649. 3440  GOSUB 440
  650. 3450  VTAB F
  651.     : HD$ = "BY R.GLENN JONES "
  652.     : GOSUB 540
  653. 3460  VTAB N8
  654.     : HD$ = "COPYRIGHT(C) 1986 R. GLENN JONES "
  655.     : GOSUB 540
  656. 3470  FOR G = C TO 1000
  657.     : NEXT 
  658. 3480  VTAB N8
  659.     : HTAB C
  660.     : CALL  - 868
  661.     : VTAB N8
  662.     : HD$ = "(PRESS ANY KEY TO CONTINUE)"
  663.     : GOSUB 540
  664. 3490  WAIT  - CVERT,N7
  665.     : POKE  - 16368,B
  666.     : POKE N9 + D,F
  667.     : POKE N9 + E,N8 - C
  668. 3500  IF  PEEK (768) <  > E THEN  PRINT D$;B$;"ST.FONTSET,A$300"
  669. 3510  POKE 232,B
  670.     : POKE 233,E
  671. 3520  IF  PEEK (CVERT) <  > N9 THEN  PRINT D$;B$;"CONVERT,A$4000"
  672. 3530  IF  PEEK (DW) <  > 169 THEN  PRINT D$;B$;"DOWNLOAD,A$800"
  673. 3540  ONERR  GOTO 3890
  674. 3550  GOSUB 440
  675.     : HOME
  676.     : VTAB P
  677.     : POKE N9,D
  678. 3560  PRINT "DATA DISK SLOT =>";
  679.     : PRINT  RIGHT$ (SL$,C)
  680. 3570  PRINT 
  681. 3580  PRINT "DATA DISK DRIVE =>";
  682.     : PRINT  RIGHT$ (DR$,C)
  683. 3590  PRINT
  684.     : PRINT PR$;
  685.     : INVERSE
  686.     : PRINT RE$;
  687.     : NORMAL
  688.     : PRINT " TO CONTINUE"
  689.     : PRINT
  690.     : PRINT "OR ANY OTHER KEY TO MODIFY VALUES"
  691.     : PRINT 
  692. 3600  PRINT A2$;
  693.     : GET Y$
  694. 3610  IF Y$ = R$ THEN  GOTO 3670
  695. 3620  VTAB P
  696.     : HTAB 18
  697.     : GET SL$
  698.     : PRINT SL$
  699.     : IF  VAL (SL$) < C OR  VAL (SL$) > P  THEN  GOTO 3620
  700. 3630  VTAB 9
  701.     : HTAB N8
  702.     : GET DR$
  703.     : PRINT DR$
  704.     : IF  VAL (DR$) < C OR  VAL (DR$) > D  THEN  GOTO 3630
  705. 3640  SL$ = ",S" + SL$
  706. 3650  DR$ = ",D" + DR$
  707. 3660  GOTO 3540
  708. 3670  CALL INIT
  709. 3680  HOME 
  710.     : VTAB N0 
  711.     : INVERSE 
  712.     : PRINT "B";
  713.     : NORMAL 
  714.     : PRINT "EGIN OR ";
  715.     : INVERSE
  716.     : PRINT E$;
  717.     : NORMAL
  718.     : PRINT "DIT"
  719.     : PRINT 
  720. 3690  PRINT A2$; 
  721.     : GET ED$
  722. 3700  HOME 
  723.     : VTAB N0
  724.     : INVERSE 
  725. 3710  PRINT N$;
  726.     : NORMAL
  727.     : PRINT "ORMAL OR ";
  728.     : INVERSE 
  729.     : PRINT E$;
  730.     : NORMAL 
  731.     : PRINT "XTENDED CHARACTER SET"
  732.     : PRINT 
  733. 3720  PRINT A2$;
  734.     : GET CS$
  735. 3730  CS = 127
  736.     : L1$ = "480"
  737.     : IF CS$ = E$ THEN CS = 255
  738.     : L1$ = "A80"
  739. 3740  IF ED$ = E$ THEN  GOSUB 2580
  740. 3750  HOME
  741.     : SCALE= C
  742.     : ROT= C
  743.     : HCOLOR= E
  744. 3760  CR = C
  745.     : DOT = D
  746.     : SMDOT = E
  747.     : CY = TC 
  748.     : CX = SC
  749. 3770  CD$ =  CHR$ (73) +  CHR$ (10) +  CHR$ (74) +  CHR$ (11) +  CHR$ (75) + CHR$ (77) +  CHR$ (32) +  CHR$ (13) +  CHR$ (3) +
  750.       CHR$ (6) +  CHR$ (43) + CHR$(45) +  CHR$ (7) +  CHR$ (19) +  CHR$ (12) +  CHR$ (16) +  CHR$ (64) + CHR$ (20) +  CHR$ (4) +
  751.       CHR$ (27)
  752. 3780  GOSUB 490
  753. 3790  VTAB N3 
  754.     : HTAB C
  755.     : INVERSE 
  756. 3800  PRINT "EDITING ASC =>";
  757.     : NORMAL
  758.     : PRINT  SPC( 14);
  759.     : INVERSE
  760.     : PRINT "DOWNLOAD =>"
  761.     : PRINT "PROPORTIONAL=>";
  762.     : NORMAL
  763.     : PRINT  SPC( 14);
  764.     : INVERSE
  765.     : PRINT "DESCENDER=>" 
  766.     : NORMAL 
  767. 3810  POKE 230,N9 
  768.     : CALL 62450
  769.     : HGR 
  770. 3820  HPLOT B,B TO B,159 TO 279,159 TO 279,B TO B,B
  771. 3830  HPLOT 108,53 TO 108,134 TO 169,134 TO 169,53 TO 108,53
  772. 3840  GOSUB 1340
  773. 3850  GOTO 120
  774. 3860  REM 
  775. 3870  REM  ONERR ROUTINE
  776. 3880  REM 
  777. 3890  HOME
  778.     : VTAB N5
  779.     : HTAB C
  780.     : INVERSE 
  781. 3900  ER =  PEEK (222) 
  782.     : CALL 1002
  783. 3910  IF ER = F THEN  PRINT "DISKETTE WRITE PROTECTED";
  784. 3920  IF ER = N THEN  PRINT "FILE NOT FOUND";
  785. 3930  IF ER = P THEN  PRINT "VOLUME MISMATCH";
  786. 3940  IF ER = Q THEN  PRINT "DISKETTE I/O ERROR";
  787. 3950  IF ER = 9 THEN  PRINT "DISKETTE FULL";
  788. 3960  IF ER = N0 THEN  PRINT "FILE LOCKED";
  789. 3970  IF ER = N1 THEN  PRINT "DOS SYNTAX ERROR";
  790.     : NORMAL
  791.     : PRINT  CHR$ (7)
  792.     : FOR G = C TO 1500
  793.     : NEXT
  794.     : Y$ = " "
  795.     : GOTO 4020
  796. 3980  IF ER = N1 + D THEN  PRINT "FILE TYPE MISMATCH";
  797. 3990  IF ER = 77 THEN  PRINT "OUT OF MEMORY";
  798.     : TEXT
  799.     : END 
  800. 4000  PRINT  CHR$ (7);
  801.     : FOR I = C TO 1500
  802.     : NEXT 
  803. 4010  HOME
  804.     : VTAB N0
  805.     : NORMAL
  806.     : PRINT PR$;
  807.     : INVERSE 
  808.     : PRINT RE$;
  809.     : NORMAL 
  810.     : PRINT " TO TRY AGAIN =>";
  811.     : GET Y$
  812. 4020  GOSUB 490
  813.     : HOME 
  814.     : GOSUB 440
  815.     : HOME 
  816. 4030  IF Y$ <  > R$ THEN  POKE 216,B
  817.     : GOTO 3540
  818. 4040  ONERR  GOTO 3890
  819. 4050  RESUME 
  820. 4060  REM 
  821. 4070  REM  QUIT
  822. 4080  REM 
  823. 4090  HOME 
  824.     : VTAB N5 - C
  825.     : HTAB C
  826. 4100  PRINT PR$;
  827.     : INVERSE 
  828.     : PRINT RE$;
  829.     : NORMAL
  830.     : PRINT " TO ";
  831.     : INVERSE
  832.     : PRINT "QUIT"
  833.     : NORMAL
  834.     : PRINT "ANY OTHER KEY TO CONTINUE =>";
  835. 4110  VTAB N5
  836.     : HTAB 29
  837.     : GET Y$
  838. 4120  IF Y$ <  > R$ THEN  HOME 
  839.     : RETURN 
  840. 4130  POKE WF,29
  841.     : POKE NF,22
  842.     : POKE NF + 153,21
  843. 4140  TEXT
  844.     : HOME
  845.     : END 
  846. INT "ANY OTHER KEY TO CONTINUE =>";
  847. 4110  VTAB N5    : HTAB 29    : GET Y$
  848. 4120  IF Y$ <  > R$ THEN  HOME     : RETURN 
  849. 4130  POKE WF,29    : POKE NF,22
  850. 4140  TEXT     : HOME     : END 
  851.